home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 3 / Amoszine 3.adf / Celebrity_source / amal_ball_bounce.AMOS / amal_ball_bounce.amosSourceCode next >
AMOS Source Code  |  1992-02-26  |  5KB  |  162 lines

  1. ' ******************************************************************** 
  2. '
  3. '                          Amal Ball Bounce  
  4. '
  5. '                     - ** By Paul Nordovics ** -
  6. '
  7. ' ******************************************************************** 
  8. '
  9. ' Explanation: 
  10. '
  11. ' Each Ball Is Given An Amal Channel Which Moves It Around The Screen
  12. ' The AMAL Internal Registers R0 to R7 Are Used As Follows:    
  13. ' R0 = Ball Direction  
  14. '   When R0=0 The Ball Direction Is Up/Right   
  15. '   When R0=1 The Ball Direction Is Down/Right   
  16. '   When R0=2 The Ball Direction Is Down/Left  
  17. '   When R0=3 The Ball Direction Is Up/Left  
  18. ' R2  \  
  19. ' R3   \ These Are Used To Work Out How Far Ball 
  20. ' R4   / Can Move Before Hitting Screen Edge   
  21. ' R5  /  
  22. ' R6 = Distance Ball Will Move Before Hitting Screen Edge  
  23. ' R7 = Ball Speed  
  24. '
  25. ' ******************************************************************** 
  26. '
  27. ' *************
  28. ' Set up screen
  29. ' *************
  30. Screen Open 0,320,256,4,Lowres : Rem Not Many Colours So It Works Faster
  31. Curs Off : Flash Off : Hide 
  32. Get Sprite Palette 
  33. Cls 0
  34. Double Buffer : Rem Prevents Balls From Flickering 
  35. Autoback 0 : Rem Disables Automatic Screen Switching  
  36. Bob Update Off : Rem Disables Automatic Bob Update
  37. '
  38. ' ****************** 
  39. ' Start Of Amal Loop 
  40. ' ****************** 
  41. ' ******************** 
  42. ' Work Out R2,R3,R4,R5 
  43. ' ******************** 
  44. A$="A:Let R2=311-X;"
  45. A$=A$+"Let R3=X-8;"
  46. A$=A$+"Let R4=Y-8;"
  47. A$=A$+"Let R5=247-Y;"
  48. '
  49. ' *********************************************
  50. ' This Bit Gets The Direction Of Ball And Jumps  
  51. ' To The Appropriate Part Of The Next Section
  52. ' *********************************************
  53. A$=A$+"If R0=0 Jump B;"
  54. A$=A$+"If R0=1 Jump C;"
  55. A$=A$+"If R0=2 Jump D;"
  56. A$=A$+"If R0=3 Jump E;"
  57. '
  58. ' ************************************************ 
  59. ' This Bit Works Out Which Axis Of Screen Edge The 
  60. ' Ball Will Reach First i.e horizontal or vertical 
  61. ' ************************************************ 
  62. ' ******** 
  63. ' Up/Right 
  64. ' ******** 
  65. A$=A$+"B: If R2<R4 Jump F; Jump G;"
  66. ' ********** 
  67. ' Down/Right 
  68. ' ********** 
  69. A$=A$+"C: If R2<R5 Jump H; Jump I;"
  70. ' *********
  71. ' Down/Left
  72. ' *********
  73. A$=A$+"D: If R3<R5 Jump J; Jump K;"
  74. ' *******
  75. ' Up/Left
  76. ' *******
  77. A$=A$+"E: If R3<R4 Jump L; Jump M;"
  78. '
  79. ' ************************************************************ 
  80. ' This Bit Moves The Ball And Sets A New Direction When Screen 
  81. ' Edge Is Reached.We Then Go Back To The Begining Of AMAL Loop   
  82. ' ************************************************************ 
  83. A$=A$+"F: Let R6=R2; M R6,0-R6,R6/R7; Let R0=3; Pause; Jump A;"
  84. A$=A$+"G: Let R6=R4; M R6,0-R6,R6/R7; Let R0=1; Pause; Jump A;"
  85. A$=A$+"H: Let R6=R2; M R6,R6,R6/R7; Let R0=2; Pause; Jump A;"
  86. A$=A$+"I: Let R6=R5; M R6,R6,R6/R7; Let R0=0; Pause; Jump A;"
  87. A$=A$+"J: Let R6=R3; M 0-R6,R6,R6/R7; Let R0=1; Pause; Jump A;"
  88. A$=A$+"K: Let R6=R5; M 0-R6,R6,R6/R7; Let R0=3; Pause; Jump A;"
  89. A$=A$+"L: Let R6=R3; M 0-R6,0-R6,R6/R7; Let R0=0; Pause; Jump A;"
  90. A$=A$+"M: Let R6=R4; M 0-R6,0-R6,R6/R7; Let R0=2; Pause; Jump A;"
  91. '
  92. ' *************************************************************
  93. ' The Number Of Balls Can Range From 1 to 64 
  94. ' Values 1 to 16 Will Allow The Program To Run Using Interrupts
  95. ' A Value Of 64 Will Cause Your Computer To Have a Fit!!!
  96. ' *************************************************************
  97. NUMBER_OF_BALLS=16
  98. '
  99. ' ********************************************************   
  100. ' If There Are More Than 16 Balls We Have To Turn Off The  
  101. ' Interrupts In Order To Have More Amal Channels Available 
  102. ' ********************************************************   
  103. If NUMBER_OF_BALLS>16
  104.    Synchro Off 
  105. End If 
  106. '
  107. ' ************************************************************ 
  108. ' We Then Set Up The AMAL Channels And Assign One To Each Ball 
  109. ' ************************************************************ 
  110. For COUNT=0 To NUMBER_OF_BALLS-1
  111.    ' *****************
  112.    ' Ball colour (1-3)
  113.    ' *****************
  114.    BALL_COLOUR=Rnd(2)+1
  115.    '
  116.    ' ***********************************
  117.    ' This Gives The Ball An Amal Channel
  118.    ' ***********************************
  119.    Bob COUNT,Rnd(319),Rnd(255),BALL_COLOUR
  120.    Channel COUNT To Bob COUNT
  121.    Amal COUNT,A$
  122.    '
  123.    ' ******************** 
  124.    ' Ball direction (0-3) 
  125.    ' ******************** 
  126.    Amreg(COUNT,0)=Rnd(3)
  127.    '
  128.    ' ********** 
  129.    ' Ball speed 
  130.    ' ********** 
  131.    Amreg(COUNT,7)=Rnd(2)+1
  132.    '
  133.    ' ************************************************** 
  134.    ' This Prevents The Background From Behind Each Ball 
  135.    ' From Being Saved - Makes Things A Little Faster  
  136.    ' ************************************************** 
  137.    Set Bob COUNT,-1,,
  138. Next COUNT
  139. '
  140. ' ******************** 
  141. ' This Sets It All Off 
  142. ' ******************** 
  143. Amal On 
  144. If NUMBER_OF_BALLS>16
  145.    Synchro On 
  146. End If 
  147. '
  148. ' ************************************************   
  149. ' Un-Rem This And See What Happens!  
  150. ' Works Best If You Give All Balls The Same Colour 
  151. ' ************************************************   
  152. 'Shift Up 50,1,3,1 
  153. '
  154. ' ****************************************** 
  155. ' Simple Loop So We Can See The Balls Moving 
  156. ' ****************************************** 
  157. Do 
  158.    Wait Vbl 
  159.    Bob Clear 
  160.    Bob Draw 
  161.    Screen Swap 
  162. Loop